/**
 * Copyright (c) 2018, 中国电信甘肃万维公司 All rights reserved.
 * 中国电信甘肃万维公司 专有/保密源代码,未经许可禁止任何人通过任何渠道使用、修改源代码.
 * 项目名称 : wxcloud
 *
 * @version V1.0
 */
package cn.xo68.boot.auth.server.token;

import cn.xo68.boot.auth.server.domain.OauthClient;
import cn.xo68.boot.auth.server.domain.OauthUser;
import cn.xo68.boot.auth.server.service.OauthUserService;
import org.apache.oltu.oauth2.as.request.OAuthTokenRequest;
import org.apache.oltu.oauth2.common.exception.OAuthProblemException;

/**
 *  令牌请求核对接口
 * @author admin
 * @date 2018/8/2 23:06
 *
 */
public interface TokenRequestCheck {

    /**
     * 令牌申请请求
     * @return
     */
    OAuthTokenRequest getOAuthTokenRequest();

    /**
     * 令牌申请请求
     * @param oAuthTokenRequest
     */
    void setOAuthTokenRequest(OAuthTokenRequest oAuthTokenRequest);

    /**
     * 用户服务
     * @return
     */
    OauthUserService getOauthUserService();

    /**
     * 核对请求参数的合法性
     * @return
     * @throws OAuthProblemException
     */
    TokenRequestCheckedResult check() throws OAuthProblemException;

    /**
     * 审核客户端令牌
     * @param checkSecret
     * @return
     * @throws OAuthProblemException
     */
    OauthClient checkClientDetail(boolean checkSecret) throws OAuthProblemException;

    /**
     * 审核 资格，如用户，authorization_code等
     * @return
     * @throws OAuthProblemException
     */
    OauthUser checkCredentials() throws OAuthProblemException;
}
